모의해킹
호스트기반모의해킹_22_패스워드 크래킹
작성자 : Heehyeon Yoo|2025-12-02
# 모의해킹# Hash Cracking# John the Ripper# Hashcat# MD5
1. 개요
데이터베이스 덤프나 시스템 파일(Example: /etc/shadow) 탈취를 통해 획득한 비밀번호는 대부분 해시(Hash) 형태로 저장되어 있다. 이를 평문(Plaintext)으로 복원하는 과정을 패스워드 크래킹(Password Cracking) 또는 해시 크래킹이라고 한다.
1.1 해시(Hash) vs 암호화(Encryption)
- 해시: 단방향 함수(One-way Function). 수학적으로 역산이 불가능하다. (예:
사과->사과주스는 가능하지만,사과주스->사과는 불가능) - 용도: 데이터 무결성 검증, 비밀번호 저장.
- 종류: MD5, SHA-1, SHA-256, Bcrypt, NTLM 등.
2. 크래킹 원리
해시는 역산이 불가능하므로, 수학적인 해독이 아니라 "추측 후 비교" 방식을 사용한다.
- 공격자가 예상되는 평문(예:
password123)을 골라 해시 함수에 넣는다. - 생성된 해시 값과 타겟 해시 값을 비교한다.
- 일치하면 크래킹 성공.
- 기법:
- 사전 공격(Dictionary Attack): 단어장(Wordlist)에 있는 단어만 대입.
- 브루트 포스(Brute Force): 모든 문자 조합 대입. (시간 소요 큼)
- 레인보우 테이블(Rainbow Table): 미리 계산된 해시 테이블을 사용하여 검색 속도를 높임.
3. 주요 도구 및 실습
3.1 해시 식별 (Hash Identification)
크래킹 전, 해당 해시가 어떤 알고리즘(MD5, SHA256 등)인지 알아야 한다.
- 도구:
hash-identifierhash-identifier # 해시 값을 입력하면 가능한 알고리즘 목록(Possible Hashes)을 출력한다.
3.2 John the Ripper (JtR)
가장 대중적인 CPU 기반 패스워드 크래커. 사용자 편의성이 높다.
기본 사용법 (Basic Cracking)
# -wordlist: 사용할 사전 파일
# -format: 해시 알고리즘 지정 (자동 탐지도 가능하지만, 지정하는 것이 빠름)
john --wordlist=/usr/share/wordlists/rockyou.txt --format=Raw-MD5 hashes.txt
결과 확인
# 이미 크래킹된 결과는 다시 돌려도 안 보일 수 있다. --show 옵션 사용.
john --show hashes.txt
3.3 다양한 포맷 크래킹
단순 텍스트 해시뿐만 아니라, 다양한 파일의 암호도 크래킹 가능하다. 이를 위해 파일을 JtR이 이해할 수 있는 포맷으로 변환하는 *2john 툴들을 사용한다.
- 리눅스 Shadow 파일:
unshadow [passwd] [shadow] > unshadowed.txt - SSH 개인키:
ssh2john id_rsa > key.hash - ZIP 파일:
zip2john secured.zip > zip.hash- 변환 후
john zip.hash로 크래킹 수행.
- 변환 후
4. 실무에서는?
- Hashcat 활용:
- 실무에서는 GPU 연산이 지원되는 Hashcat이 훨씬 빠르고 강력하여 주력으로 사용된다. John the Ripper는 다양한 포맷 지원과 유연성 때문에 보조 도구로 많이 쓰인다.
- 비밀번호 정책 우회:
- 해시 크래킹은 오프라인(Offline) 공격이므로, 시스템의 계정 잠금(Account Lockout) 정책에 영향을 받지 않는다. 획득한 해시만 있다면 무제한으로 시도 가능하다.